package monster.flight.comm.util.mobile.factory;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

import monster.flight.comm.util.mobile.help.LinkWS;
import monster.flight.comm.util.mobile.help.LinkWSSoap;


public class MoblieMsgImp implements MobileMsg{

	/**
	 * 发送一条短信
	 * @param tel
	 * @param info
	 * @return 0，发送成功进入审核阶段；1、直接发送成功；-1、帐号尚未注册；-2、其他错误；
	 * -3、 * 帐号或则密码错误；-4、一次提交信息不能超过600个手机号码；-5、企业号帐户余额不足，请先充值再提交短信息！；
	 * -6、定时发送时间不是有效的时间格式；-8、发送内容需在3到500个字之间；-9、 发送号码为空
	 * @throws Exception
	 */
	public String send(String tel, String info) throws Exception {
		// TODO Auto-generated method send
		LinkWSSoap soap = new LinkWS().getLinkWSSoap(); 
		//打印出0 表示测试成功（两个小时内不要像同一个手机发送相同内容.）
		//从配置表取账号密码
		//int ret = soap.batchSend(SchConstant.SMS_USER_NAME, SchConstant.SMS_PASS_WORD, tel, info, "", "");
	///	return String.valueOf(ret);
		return  "";
	}

	/**
	 * 批量发送短信   信息内容一样
	 * @param tels
	 * @param info
	 * @return 0，发送成功进入审核阶段；1、直接发送成功；-1、帐号尚未注册；-2、其他错误；
	 * -3、 * 帐号或则密码错误；-4、一次提交信息不能超过600个手机号码；-5、企业号帐户余额不足，请先充值再提交短信息！；
	 * -6、定时发送时间不是有效的时间格式；-8、发送内容需在3到500个字之间；-9、 发送号码为空
	 * <返回错误类型|`|||手机号#返回内容#提交时间>
	 * @throws Exception
	 */
	public String banctSend(String tels, String info) throws Exception {
		LinkWSSoap soap = new LinkWS().getLinkWSSoap(); 
		//打印出0 表示测试成功（两个小时内不要像同一个手机发送相同内容.）
		int ret=0;
		//从配置表取账号密码
		//int ret = soap.batchSend(SchConstant.SMS_USER_NAME, SchConstant.SMS_PASS_WORD, tels, info, "", "");
		String sret=String.valueOf(ret);
		if(ret!=0&&ret!=1){
			 sret=sret+"|`|"+getReportFail();
		}		
		return sret;
	}

	/**
	 * 批量发送短信 信息内容不一样 
	 * @param tels
	 * @param infos
	 * @return 0，发送成功进入审核阶段；1、直接发送成功;	 发送失败的类型加上手机号码：||手机号#返回内容#返回错误类型
	 * @throws Exception
	 */
	public String banctSendInfo(String tels, String infos) throws Exception {
		// TODO Auto-generated method banctSendInfo
		String tel[]=null;
		String info[]=null;
		if(tels.indexOf(",")>-1){
			tel=tels.split(",");			
		}else{
			tel[0]=tels;
		}
		if(infos.indexOf("`")>-1){
			info=infos.split("`");
		}else{
			info[0]=infos;
		}
		LinkWSSoap soap = new LinkWS().getLinkWSSoap(); 
		String ret="";//
		for(int i=0;i<tel.length;i++){
			String one_ret=send(tel[i], info[i]);
			if(!"0".equals(one_ret)&&!"1".equals(one_ret)){
				ret+="||"+tel[i]+"#"+info[i]+"#"+one_ret;
			}
		}
		if("".equals(ret)){
			ret="1";
		}
		return String.valueOf(ret);
	}
	
	/**
	 * 发送失败的短信
	 */
	private  String getReportFail(){
		String ret="";
		try {
			URL url=null;
			
			//从配置表取账号密码
			//URL url= new URL("http://sdk1.mb345.com/ws/LinkWS.asmx/GetReportFail?CorpID="+SchConstant.SMS_USER_NAME+"&Pwd="+SchConstant.SMS_PASS_WORD+"&cell=");			
			URLConnection  conn = url.openConnection();		
			
			BufferedReader reader = new BufferedReader(new InputStreamReader( conn.getInputStream(),"UTF-8"));  
			String s; 
			//依次循环，至到读的值为空
			  StringBuilder sb = new StringBuilder();
			   while ((s = reader.readLine()) != null) {
			    sb.append(s);   
			   }
			   reader.close();
			   if(sb.indexOf("<string xmlns=\"http://tempuri.org/\">")>-1){
				   int start=sb.indexOf("<string xmlns=\"http://tempuri.org/\">")+"<string xmlns=\"http://tempuri.org/\">".length();
				   int end=sb.indexOf("</string>");
				   String sbs =sb.substring(start,end);
				   if(!sbs.equals("全部正确提交,无错误返回报告")){//存在错误报告
					   ret=sbs;
				   }
			   }
			   //System.out.println(sb);
			   //ret=sb.toString();
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			ret="URL连接异常";
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			ret="IO异常";
			e.printStackTrace();
		}
		return ret;
	}
   
}
